import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

# 假设我们有一些三维数据点
np.random.seed(0)  # 设置随机种子，以便结果可复现
x = np.random.rand(50)
y = np.random.rand(50)
z = np.random.rand(50)

# 创建一个新的图形
fig = plt.figure()

# 添加一个3D子图
ax = fig.add_subplot(111, projection='3d')

# 为每个点生成一个颜色（这里使用RGB颜色）
colors = np.random.rand(50, 3)  # 生成50个RGB颜色值，每个颜色值是一个长度为3的数组

# 绘制3D散点图，并为每个点指定颜色
sc = ax.scatter(x, y, z, c=colors)

# 添加颜色条
cbar = fig.colorbar(sc)
cbar.set_label('颜色条')

# 为每个点添加序号标签
for i, txt in enumerate(x):
    ax.text(x[i], y[i], z[i], f'{i}', color='black', fontweight='bold', ha='center', va='center')

# 设置标题和轴标签
ax.set_title('带有不同颜色和文字序号的3D散点图示例')
ax.set_xlabel('X轴')
ax.set_ylabel('Y轴')
ax.set_zlabel('Z轴')

# 自动调整视角以便更好地查看图形
ax.view_init(elev=10., azim=20)

# 显示图形
plt.show()
